/*
初中的小明已经开始学习求解一元二次方程了，下面让我们来教计算机如何求解。输入 a,b,c ，求一元二次方程 ax²+bx+c=0 的根。

输入：
假设 a，b，c均int。

输出：
要求输出的根为 double 型，保留 6 位小数。

说明：如果不会作，请参考教材P108的例5-17
*/

/*
测试用例1:
输入：
0 0 0↵
输出：
Input error!↵

测试用例2:
输入：
0 0 10↵
输出：
Input error!↵

测试用例3:
输入：
0 10 0↵
输出：
x=0.000000↵

测试用例4:
输入：
10 0 0↵
输出：
x1=x2=0.000000↵

测试用例5:
输入：
10 20 0↵
输出：
x1=0.000000↵
x2=-2.000000↵

测试用例6:
输入：
10 0 20↵
输出：
x1=1.414214i↵
x2=-1.414214i↵

测试用例7:
输入：
1 2 1↵
输出：
x1=x2=-1.000000↵

测试用例8:
输入：
1 2 -1↵
输出：
x1=0.414214↵
x2=-2.414214↵

测试用例9:
输入：
2 2 2↵
输出：
x1=-0.500000+0.866025i↵
x2=-0.500000-0.866025i↵

*/
#include <iostream>
using namespace std;

int main(int argc, char *argv[]) {
	// ax² + bx + c = 0
	
	// 接收用户输入
	int a, b, c;
	cin >> a >> b >> c;
	
	// 判断是否输入正确
	if (a==0 && b==0)
	{
		cout << "Input error!\n" << endl;
		return 0;
	}
	
	// 求解一元一次方程
	if (a==0)
	{
		double x = -c / b;
		printf("x=%0.6f\n", x);
		return 0;
	}
	
	// 求解普通一元二次方程
	double t = pow(b, 2) - 4.0*a*c;
	if (t >= 0)
	{
		double x2 = (-b - sqrt(t)) / (2*a);
		double x1 = (-b + sqrt(t)) / (2*a);
		
		if (t == 0)
		{
			printf("x1=x2=%0.6f\n", x1);
			return 0;
		}
		
		printf("x1=%0.6f\nx2=%0.6f\n", x1, x2);
		return 0;
		
	}
	
	// 求解复数
	double x1_real = -b / (2.0 * a);
	double x1_imaginary = sqrt(-t) / (2*a);
	double x2_real = -b / (2.0 * a);
	double x2_imaginary = -sqrt(-t) / (2*a);
	
	if (x1_real == 0)
	{
		printf("x1=%0.6fi\n", x1_imaginary);
		printf("x2=%0.6fi\n", x2_imaginary);
	}
	else
	{
		if (x1_imaginary >= 0)
		{
			printf("x1=%0.6f+%0.6fi\n", x1_real, x1_imaginary);
		}
		else
		{
			printf("x1=%0.6f%0.6fi\n", x1_real, x1_imaginary);
		}
		
		if (x2_imaginary >= 0)
		{
			printf("x2=%0.6f+%0.6fi\n", x2_real, x2_imaginary);
		}
		else 
		{
			printf("x2=%0.6f%0.6fi\n", x2_real, x2_imaginary);
		}
		
	}
	
	
	return 0;
}